module Texture {
	export class PreLoadGroup extends egret.DisplayObjectContainer{
		private _loadingUI:Component.LoadingUI;

		/**
		 * 构造函数
		 */
		public constructor() {
			super();
			this.addEventListener(egret.Event.ADDED_TO_STAGE, this.onAddToStage, this);
		}

		/**
		 * 添加到舞台监听器
		 */
		private onAddToStage(event: egret.Event) {
			this._loadingUI=new Component.LoadingUI(0,100);
			this.addChild(this._loadingUI);
			this._loadingUI.x=this.stage.stageWidth/2;
			this._loadingUI.y=this.stage.stageHeight/2;
			this.preLoadGroup();
		}

		/**
		 * 预加载资源组
		 */
		private preLoadGroup():void{
			//先加载配置文件
			RES.addEventListener(RES.ResourceEvent.CONFIG_COMPLETE,this.onConfigComplete,this);
			RES.addEventListener(RES.ResourceEvent.CONFIG_LOAD_ERROR,this.onConfigError,this);
			RES.loadConfig("resource/default.res.json","resource/");
		}

		/**
		 * 资源配置文件加载完成
		 */
		private onConfigComplete(evt:RES.ResourceEvent):void{
			this._loadingUI.setTipText("配置文件加载完成!");
			//移除加载配置文件监听器
			RES.removeEventListener(RES.ResourceEvent.CONFIG_COMPLETE,this.onConfigComplete,this);
			RES.removeEventListener(RES.ResourceEvent.CONFIG_LOAD_ERROR,this.onConfigError,this);
			//开始加载资源组
			this._loadingUI.setTipText("加载资源组中···");
			RES.addEventListener(RES.ResourceEvent.GROUP_COMPLETE,this.onGroupComplete,this);
			RES.addEventListener(RES.ResourceEvent.GROUP_LOAD_ERROR,this.onGroupError,this);
			RES.addEventListener(RES.ResourceEvent.GROUP_PROGRESS,this.onGroupProgress,this);
			RES.addEventListener(RES.ResourceEvent.ITEM_LOAD_ERROR,this.onItemError,this);
			RES.loadGroup("preload");
		}

		/**
		 * 资源配置文件加载错误
		 */
		private onConfigError(evt:RES.ResourceEvent):void{
			this._loadingUI.setTipText("配置文件加载错误！");
		}

		/**
		 * 预加载资源组中
		 */
		private onGroupProgress(evt:RES.ResourceEvent):void{
			if(evt.groupName=="preload" && evt.resItem.loaded){
				this._loadingUI.setProgress(evt.itemsLoaded,evt.itemsTotal);
			}			
		}

		/**
		 * 预加载资源组完成
		 */
		private onGroupComplete(evt:RES.ResourceEvent):void{
			this._loadingUI.setTipText("资源组加载完成！");
			RES.removeEventListener(RES.ResourceEvent.GROUP_COMPLETE,this.onGroupComplete,this);
			RES.removeEventListener(RES.ResourceEvent.GROUP_LOAD_ERROR,this.onGroupError,this);
			RES.removeEventListener(RES.ResourceEvent.GROUP_PROGRESS,this.onGroupProgress,this);
			
			var bitmap:egret.Bitmap=new egret.Bitmap(RES.getRes("hero_png") as egret.Texture);
			//设置锚点要用绝对数值
			bitmap.anchorOffsetX=bitmap.width/2;
			bitmap.anchorOffsetY=bitmap.height/2;
			bitmap.x=this.stage.stageWidth/2;
			bitmap.y=this.stage.stageHeight/2;
			this.addChild(bitmap);

			//移除加载组件
			if (this.contains(this._loadingUI)) {
				this.removeChild(this._loadingUI);
			}
			var yn:string=RES.getRes("yn") as string;
			//egret.log(yn);
			console.debug(yn);
		}

		/**
		 * 预加载资源组失败
		 */
		private onGroupError(evt:RES.ResourceEvent):void{
			this._loadingUI.setTipText("预加载资源组失败！");
		}

		/**
		 * 预加载资源失败
		 */
		private onItemError(evt:RES.ResourceEvent):void{
			this._loadingUI.setTipText("资源："+evt.resItem.url+"加载错误！");
		}
	}
}